typedef struct _My_Struct {
	char a;
	int b;
	int c;
}My_Struct, * PMy_Struct;

typedef struct _My_Struct2 {
	char a;
	int b;
	int c;
}My_Struct2, * PMy_Struct2;
#ifdef __cplusplus
extern "C" {
#endif

	void __stdcall c_fun__stdcall() {};
	static void __stdcall c_static_fun__stdcall() {};
	void __cdecl c_fun__cdecl() {};
	void __fastcall c_fun__fastcall() {};
	void __stdcall c_fun__stdcall__one_int_param(int a) {};
	void __cdecl c_fun__cdecl__one_int_param(int a) {};
	void __fastcall c_fun__fastcall__one_int_param(int a) {};
	int __stdcall c_fun__stdcall__one_int_param__return_int(int a) { return 0; };
	int __cdecl c_fun__cdecl__one_int_param__return_int(int a) { return 0; };
	int __fastcall c_fun__fastcall__one_int_param__return_int(int a) { return 0; };
#ifdef __cplusplus
}
#endif


void __stdcall cpp_fun__stdcall() {};
static void __stdcall cpp_static__fun__stdcall() {};
void __cdecl cpp_fun__cdecl() {};
void __fastcall cpp_fun__fastcall() {};

void __stdcall cpp_fun__stdcall__one_char_param(char a) {};
void __cdecl cpp_fun__cdecl__one_char_param(char a) {};
void __fastcall cpp_fun__fastcall__one_char_param(char a) {};

void __stdcall cpp_fun__stdcall__one_unsigned_char_param(unsigned char a) {};
void __cdecl cpp_fun__cdecl__one_unsigned_char_param(unsigned char a) {};
void __fastcall cpp_fun__fastcall__one_unsigned_char_param(unsigned char a) {};

void __stdcall cpp_fun__stdcall__one_short_param(short a) {};
void __cdecl cpp_fun__cdecl__one_short_param(short a) {};
void __fastcall cpp_fun__fastcall__one_short_param(short a) {};

void __stdcall cpp_fun__stdcall__one_unsigned_short_param(unsigned short a) {};
void __cdecl cpp_fun__cdecl__one_unsigned_short_param(unsigned short a) {};
void __fastcall cpp_fun__fastcall__one_unsigned_short_param(unsigned short a) {};

void __stdcall cpp_fun__stdcall__one_int_param(int a) {};
void __cdecl cpp_fun__cdecl__one_int_param(int a) {};
void __fastcall cpp_fun__fastcall__one_int_param(int a) {};

void __stdcall cpp_fun__stdcall__one_unsigned_int_param(unsigned int a) {};
void __cdecl cpp_fun__cdecl__one_unsigned_int_param(unsigned int a) {};
void __fastcall cpp_fun__fastcall__one_unsigned_int_param(unsigned int a) {};

void __stdcall cpp_fun__stdcall__one_long_param(long a) {};
void __cdecl cpp_fun__cdecl__one_long_param(long a) {};
void __fastcall cpp_fun__fastcall__one_long_param(long a) {};

void __stdcall cpp_fun__stdcall__one_unsigned_long_param(unsigned long a) {};
void __cdecl cpp_fun__cdecl__one_unsigned_long_param(unsigned long a) {};
void __fastcall cpp_fun__fastcall__one_unsigned_long_param(unsigned long a) {};

void __stdcall cpp_fun__stdcall__one_float_param(float a) {};
void __cdecl cpp_fun__cdecl__one_float_param(float a) {};
void __fastcall cpp_fun__fastcall__one_float_param(float a) {};

void __stdcall cpp_fun__stdcall__one_double_param(double a) {};
void __cdecl cpp_fun__cdecl__one_double_param(double a) {};
void __fastcall cpp_fun__fastcall__one_double_param(double a) {};

#ifdef __cplusplus
void __stdcall cpp_fun__stdcall__one_bool_param(bool a) {};
void __cdecl cpp_fun__cdecl__one_bool_param(bool a) {};
void __fastcall cpp_fun__fastcall__one_bool_param(bool a) {};
#endif

void __stdcall cpp_fun__stdcall__one_pointer_param(void* a) {};
void __cdecl cpp_fun__cdecl__one_pointer_param(void* a) {};
void __fastcall cpp_fun__fastcall__one_pointer_param(void* a) {};

#ifdef __cplusplus
void __stdcall cpp_fun__stdcall__one_reference_param(int& a) {};
void __cdecl cpp_fun__cdecl__one_reference_param(int& a) {};
void __fastcall cpp_fun__fastcall__one_reference_param(int& a) {};
#endif

void __stdcall cpp_fun__stdcall__one_struct_param(My_Struct a) {};
void __cdecl cpp_fun__cdecl__one_struct_param(My_Struct a) {};
void __fastcall cpp_fun__fastcall__one_struct_param(My_Struct a) {};

void __stdcall cpp_fun__stdcall__one_struct_pointer_param(PMy_Struct a) {};
void __cdecl cpp_fun__cdecl__one_struct_pointer_param(PMy_Struct a) {};
void __fastcall cpp_fun__fastcall__one_struct_pointer_param(PMy_Struct a) {};

#ifdef __cplusplus
void __stdcall cpp_fun__stdcall__one_struct_reference_param(My_Struct& a) {};
void __cdecl cpp_fun__cdecl__one_struct_reference_param(My_Struct& a) {};
void __fastcall cpp_fun__fastcall__one_struct_reference_param(My_Struct& a) {};
#endif

void __stdcall cpp_fun__stdcall__two_struct_param(My_Struct a, My_Struct b) {};
void __cdecl cpp_fun__cdecl__two_struct_param(My_Struct a, My_Struct b) {};
void __fastcall cpp_fun__fastcall__two_struct_param(My_Struct a, My_Struct b) {};

void __stdcall cpp_fun__stdcall__two_struct_pointer_param(PMy_Struct a, PMy_Struct b) {};
void __cdecl cpp_fun__cdecl__two_struct_pointer_param(PMy_Struct a, PMy_Struct b) {};
void __fastcall cpp_fun__fastcall__two_struct_pointer_param(PMy_Struct a, PMy_Struct b) {};

#ifdef __cplusplus
void __stdcall cpp_fun__stdcall__two_struct_reference_param(My_Struct& a, My_Struct& b) {};
void __cdecl cpp_fun__cdecl__two_struct_reference_param(My_Struct& a, My_Struct& b) {};
void __fastcall cpp_fun__fastcall__two_struct_reference_param(My_Struct& a, My_Struct& b) {};
#endif

void __stdcall cpp_fun__stdcall__three_struct_param(My_Struct a, My_Struct b, My_Struct c) {};
void __cdecl cpp_fun__cdecl__three_struct_param(My_Struct a, My_Struct b, My_Struct c) {};
void __fastcall cpp_fun__fastcall__three_struct_param(My_Struct a, My_Struct b, My_Struct c) {};

void __stdcall cpp_fun__stdcall__three_struct_pointer_param(PMy_Struct a, PMy_Struct b, PMy_Struct c) {};
void __cdecl cpp_fun__cdecl__three_struct_pointer_param(PMy_Struct a, PMy_Struct b, PMy_Struct c) {};
void __fastcall cpp_fun__fastcall__three_struct_pointer_param(PMy_Struct a, PMy_Struct b, PMy_Struct c) {};

#ifdef __cplusplus
void __stdcall cpp_fun__stdcall__three_struct_reference_param(My_Struct& a, My_Struct& b, My_Struct& c) {};
void __cdecl cpp_fun__cdecl__three_struct_reference_param(My_Struct& a, My_Struct& b, My_Struct& c) {};
void __fastcall cpp_fun__fastcall__three_struct_reference_param(My_Struct& a, My_Struct& b, My_Struct&) {};
#endif

void __stdcall cpp_fun__stdcall__four_struct_param(My_Struct a, My_Struct2 b, My_Struct c, My_Struct2 d) {};
void __cdecl cpp_fun__cdecl__four_struct_param(My_Struct a, My_Struct2 b, My_Struct c, My_Struct2 d) {};
void __fastcall cpp_fun__fastcall__four_struct_param(My_Struct a, My_Struct2 b, My_Struct c, My_Struct2 d) {};

void __stdcall cpp_fun__stdcall__four_struct_pointer_param(PMy_Struct a, PMy_Struct2 b, PMy_Struct c, PMy_Struct2 d) {};
void __cdecl cpp_fun__cdecl__four_struct_pointer_param(PMy_Struct a, PMy_Struct2 b, PMy_Struct c, PMy_Struct2 d) {};
void __fastcall cpp_fun__fastcall__four_struct_pointer_param(PMy_Struct a, PMy_Struct2 b, PMy_Struct c, PMy_Struct2 d) {};

#ifdef __cplusplus
void __stdcall cpp_fun__stdcall__four_struct_reference_param(My_Struct& a, My_Struct2& b, My_Struct& c, My_Struct2& d) {};
void __cdecl cpp_fun__cdecl__four_struct_reference_param(My_Struct& a, My_Struct2& b, My_Struct& c, My_Struct2& d) {};
void __fastcall cpp_fun__fastcall__four_struct_reference_param(My_Struct& a, My_Struct2& b, My_Struct&, My_Struct2& d) {};
#endif

int __stdcall cpp_fun__stdcall__one_int_param__return_int(int a) { return 0; };
int __cdecl cpp_fun__cdecl__one_int_param__return_int(int a) { return 0; };
int __fastcall cpp_fun__fastcall__one_int_param__return_int(int a) { return 0; };

#ifdef __cplusplus
namespace abc {
#endif
#ifdef __cplusplus
	extern "C" {
#endif
		void __stdcall namespace_c_fun__stdcall() {};
		void __cdecl namespace_c_fun__cdecl() {};
		void __fastcall namespace_c_fun__fastcall() {};
		static void __stdcall namespace_c_static_fun__stdcall() {};
		static void __cdecl namespace_c_static_fun__cdecl() {};
		static void __fastcall namespace_c_static_fun__fastcall() {};
#ifdef __cplusplus
	}
#endif
	void __stdcall namespace_cpp_fun__stdcall() {};
	void __cdecl namespace_cpp_fun__cdecl() {};
	void __fastcall namespace_cpp_fun__fastcall() {};
	static void __stdcall namespace_cpp_static_fun__stdcall() {};
	static void __cdecl namespace_cpp_static_fun__cdecl() {};
	static void __fastcall namespace_cpp_static_fun__fastcall() {};
#ifdef __cplusplus
}
#endif
#ifdef __cplusplus
class demo {
public:
	void  class_cpp_fun__thiscall();
	void __stdcall class_cpp_fun__stdcall();
	void __cdecl class_cpp_fun__cdecl();
	void __fastcall class_cpp_fun__fastcall();
	static void  class_static_cpp_fun__thiscall();
	static void __stdcall class_static_cpp_fun__stdcall();
	static void __cdecl class_static_cpp_fun__cdecl();
	static void __fastcall class_static_cpp_fun__fastcall();
};
void demo::class_cpp_fun__thiscall() {
}
void __stdcall demo::class_cpp_fun__stdcall() {
}
void __cdecl demo::class_cpp_fun__cdecl() {
}
void __fastcall demo::class_cpp_fun__fastcall() {
}
void demo::class_static_cpp_fun__thiscall() {
}
void __stdcall demo::class_static_cpp_fun__stdcall() {
}
void __cdecl demo::class_static_cpp_fun__cdecl() {
}
void __fastcall demo::class_static_cpp_fun__fastcall() {
}
void test() {
	c_static_fun__stdcall();
	cpp_static__fun__stdcall();
	abc::namespace_c_static_fun__cdecl();
	abc::namespace_c_static_fun__stdcall();
	abc::namespace_c_static_fun__fastcall();
	abc::namespace_cpp_static_fun__cdecl();
	abc::namespace_cpp_static_fun__stdcall();
	abc::namespace_cpp_static_fun__fastcall();
}
#endif
